#ifndef __gm_windows_h__
#define __gm_windows_h__


#include "IGMApplication.h"


namespace app
{

class GMWindows : public app::IGMApplication
{	
	HWND m_hWnd;
	HINSTANCE m_hInstance;
	WNDPROC m_wndproc;
	char m_title[256];	
	POINT m_pos;
	POINT m_size;		


public :
	GMWindows( void );
	~GMWindows( void );

	virtual bool initialize( void ) sealed override;
	void destroy_windows( void );
	
	HWND hWnd( void ) const { return m_hWnd; }
	void hWnd( HWND hwnd ) { m_hWnd = hwnd; }
	HINSTANCE hInstance( void ) const { return m_hInstance; }
	void hInstance( HINSTANCE hInst ) { m_hInstance = hInst; }
	void wndproc( WNDPROC wnd_proc ) { m_wndproc = wnd_proc; }
	char* title( void ) { return m_title; }
	void title( char* title ) { strcpy_s( m_title, sizeof( m_title ) + 1, title ); }	
	POINT pos( void ) const { return m_pos; }
	void pos( long x, long y ) { m_pos.x = x; m_pos.y = y; }
	POINT size( void ) const { return m_size; }
	void size( long x, long y ) { m_size.x = x; m_size.y = y; }
	


private :
	virtual void destroy( void ) sealed override;
};

};


#endif